import 'package:json_annotation/json_annotation.dart';

part 'aria.g.dart';

@JsonSerializable(includeIfNull: false, explicitToJson: true)
class General {
  var withTitle;
  var withoutTitle;

  General({this.withTitle, this.withoutTitle});

  factory General.fromJson(Map<String, dynamic> json) =>
      _$GeneralFromJson(json);

  Map<String, dynamic> toJson() => _$GeneralToJson(this);
}

@JsonSerializable(includeIfNull: false, explicitToJson: true)
class Separator {
  var middle;
  var end;

  Separator({this.middle, this.end});

  factory Separator.fromJson(Map<String, dynamic> json) =>
      _$SeparatorFromJson(json);

  Map<String, dynamic> toJson() => _$SeparatorToJson(this);
}

@JsonSerializable(includeIfNull: false, explicitToJson: true)
class AriaSeriesType {
  var prefix;
  var withTitle;
  var withoutTitle;
  Separator? separator;

  AriaSeriesType(
      {this.prefix, this.withTitle, this.withoutTitle, this.separator});

  factory AriaSeriesType.fromJson(Map<String, dynamic> json) =>
      _$AriaSeriesTypeFromJson(json);

  Map<String, dynamic> toJson() => _$AriaSeriesTypeToJson(this);
}

@JsonSerializable(includeIfNull: false, explicitToJson: true)
class AriaSeries {
  var maxCount;
  AriaSeriesType? single;
  AriaSeriesType? multiple;

  AriaSeries({this.maxCount, this.single, this.multiple});

  factory AriaSeries.fromJson(Map<String, dynamic> json) =>
      _$AriaSeriesFromJson(json);

  Map<String, dynamic> toJson() => _$AriaSeriesToJson(this);
}

@JsonSerializable(includeIfNull: false, explicitToJson: true)
class AriaData {
  var maxCount;
  var allData;
  var partialData;
  var withName;
  var withoutName;
  Separator? separator;

  AriaData(
      {this.maxCount,
      this.allData,
      this.partialData,
      this.withName,
      this.withoutName,
      this.separator});

  factory AriaData.fromJson(Map<String, dynamic> json) =>
      _$AriaDataFromJson(json);

  Map<String, dynamic> toJson() => _$AriaDataToJson(this);
}

@JsonSerializable(includeIfNull: false, explicitToJson: true)
class AriaLabel {
  var enabled;
  var description;
  General? general;

  AriaLabel({this.enabled, this.description, this.general});

  factory AriaLabel.fromJson(Map<String, dynamic> json) =>
      _$AriaLabelFromJson(json);

  Map<String, dynamic> toJson() => _$AriaLabelToJson(this);
}

@JsonSerializable(includeIfNull: false, explicitToJson: true)
class Decals {
  var symbol;
  var symbolSize;
  var symbolKeepAspect;
  var color;
  var backgroundColor;
  var dashArrayX;
  var dashArrayY;
  var rotation;

  var maxTileWidth;
  var maxTileHeight;

  Decals(
      {this.symbol,
      this.symbolSize,
      this.symbolKeepAspect,
      this.color,
      this.backgroundColor,
      this.dashArrayX,
      this.dashArrayY,
      this.rotation,
      this.maxTileWidth,
      this.maxTileHeight});

  factory Decals.fromJson(Map<String, dynamic> json) => _$DecalsFromJson(json);

  Map<String, dynamic> toJson() => _$DecalsToJson(this);
}

@JsonSerializable(includeIfNull: false, explicitToJson: true)
class Decal {
  var show;

  Decal({this.show});

  factory Decal.fromJson(Map<String, dynamic> json) => _$DecalFromJson(json);

  Map<String, dynamic> toJson() => _$DecalToJson(this);
}

@JsonSerializable(includeIfNull: false, explicitToJson: true)
class Aria {
  var enabled;
  AriaLabel? label;
  Decal? decal;

  Aria({this.enabled, this.label, this.decal});

  factory Aria.fromJson(Map<String, dynamic> json) => _$AriaFromJson(json);

  Map<String, dynamic> toJson() => _$AriaToJson(this);
}
